package cn.com.dcsgo.mapper;

import cn.com.dcsgo.domain.bo.CustomerTotalHistoricalTransactionAmountBO;
import cn.com.dcsgo.domain.po.Order;
import cn.com.dcsgo.domain.vo.OrderVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 针对表【order(订单表)】的数据库操作Mapper
 *
 * @author Dcsgo
 * @since 13/5/2025 上午 10:54
 */
@Mapper
public interface OrderMapper extends BaseMapper<Order> {

    /**
     * 获取所有客户历史交易总额记录
     *
     * @return 所有客户历史交易总额记录
     */
    List<CustomerTotalHistoricalTransactionAmountBO> selectCustomerTotalHistoricalTransactionAmountBOList();

    /**
     * 分页条件查询客户订单信息(总交易金额降序)
     *
     * @param pageParam      分页参数
     * @param custName       客户名称
     * @param itemName       产品名称
     * @param state          订单状态
     * @param orderDateBegin 订单时间-开始
     * @param orderDateEnd   订单时间-结束
     * @param totalAmountMin 交易总计金额-最小值
     * @param totalAmountMax 交易总计金额-最大值
     * @return 客户订单信息分页结果
     */
    IPage<OrderVO> selectOrderVOPage(Page<OrderVO> pageParam,
                                     @Param("custName") String custName,
                                     @Param("itemName") String itemName,
                                     @Param("state") String state,
                                     @Param("orderDateBegin") LocalDateTime orderDateBegin,
                                     @Param("orderDateEnd") LocalDateTime orderDateEnd,
                                     @Param("totalAmountMin") Double totalAmountMin,
                                     @Param("totalAmountMax") Double totalAmountMax);
}




